::Programado por Cruz
::Dependiendo del parametro introducido por el call del archivo cruz selecciona la etiqueta correspondiente.
::Con las opciones de modificacion de claves haremos un call del archivo rutas donde hay guardadas las diferentes claves
::del registro utilizadas que se utilizan por cada uno de los integrantes.
@echo off&call:%*&goto :eof

::Zona de copia de seguridad del registro, el archivo se guarda en la carpeta donde elijamos.
:copia
cls
set ruta=
set /p ruta= Introduzca una ruta absoluta para guardar la copia del registro...

if %ruta%x==x goto :rutamal
if exist %ruta% goto :rutabien
if %ruta%==exit goto :eof
if not exist %ruta% goto :rutamal


:rutamal
echo La ruta no existe, introduzcala de nuevo o escriba exit para salir...
pause
goto :copia
::Usando la opcion de copia de seguridad del regedit creamos un respaldo 
::con el comando E
:rutabien
md %ruta%Copia >nul
echo Espere mientras se crea la copia de seguridad...
echo.
::HKLM
reg save HKLM\HARDWARE %ruta%Copia\hklmhard.reg >nul
reg save HKLM\BCD00000000 %ruta%Copia\hklmbcd.reg >nul
reg save HKLM\SAM %ruta%Copia\hklmsam.reg >nul
reg save HKLM\SECURITY %ruta%Copia\hklmsecu.reg >nul
reg save HKLM\SOFTWARE %ruta%Copia\hklmsoft.reg >nul
reg save HKLM\SYSTEM %ruta%Copia\hklmsys.reg >nul 
::HKU
reg save HKU\.DEFAULT %ruta%Copia\hkudef.reg >nul
reg save HKU\S-1-5-18 %ruta%Copia\hku18.reg >nul
reg save HKU\S-1-5-19 %ruta%Copia\hku19.reg >nul
reg save HKU\S-1-5-20 %ruta%Copia\hku20.reg >nul
::HKCC
reg save HKCC %ruta%Copia\hkcc.reg >nul
::HKCU
reg save HKCU %ruta%Copia\hkcu.reg >nul
::HKCR
reg save HKCR %ruta%Copia\hkcr.reg >nul
cls
::Comprobamos si el backup fue creado
IF EXIST %ruta%Copia\*.reg  (
    echo La copia ha sido creado con exito en %ruta%Copia
) ELSE (
    echo Fallo la creacion del BackUp.
)
echo.
set ruta=
pause

goto :eof

::Zona de restauracion de copia de seguridad del registro.
:resta
cls
echo Introduzca una ruta absoluta donde reside el directorio Copia
set /p ruta=con la copia del registro...

if %ruta%x==x goto :rmal
if exist %ruta% goto :rbien
if %ruta%==exit goto :eof
if not exist %ruta% goto :rmal

:rmal
echo.
echo La ruta no existe, introduzcala de nuevo o escriba exit para salir...
pause
goto :resta
::Usando la opcion de restauracion de copia de regedit restauramos la copia de seguridad
:rbien
echo.
echo Espere mientras se restaura la copia de seguridad...
::Funciona
reg restore "HKLM\HARDWARE" %ruta%Copia\hklmhard.reg >nul
::reg restore HKLM\BCD00000000 %ruta%Copia\hklmbcd.reg
::Funciona
reg restore "HKLM\SAM" %ruta%Copia\hklmsam.reg >nul
::reg restore "HKLM\SECURITY" %ruta%Copia\hklmsecu.reg
::reg restore "HKLM\SYSTEM" %ruta%Copia\hklmsys.reg
::Funciona
reg restore "HKU\.DEFAULT" %ruta%Copia\hkudef.reg >nul
::Funciona
reg restore "HKU\S-1-5-18" %ruta%Copia\hku18.reg >nul
::Funciona
reg restore "HKU\S-1-5-19" %ruta%Copia\hku19.reg >nul
::Funciona
reg restore "HKU\S-1-5-20" %ruta%Copia\hku20.reg >nul
::Funciona
reg restore "HKCC" %ruta%Copia\hkcc.reg >nul
::Funciona
reg restore "HKCU" %ruta%Copia\hkcu.reg >nul
::Funciona
reg restore "HKCR" %ruta%Copia\hkcr.reg >nul
::Funciona
reg restore "HKLM\SOFTWARE" %ruta%Copia\hklmsoft.reg >nul
cls
::Comprobamos si el backup fue creado
IF EXIST %ruta%Copia\*.reg (
    echo El BackUp ha sido restaurado con exito reinicie el sistema.
    rd /s /q %ruta%Copia >nul
) ELSE (
    echo Fallo la restauracion del BackUp.
)
echo.
set ruta=
pause

goto :eof

::Zona de mejora de velocidad de inicio de los programas
:velo
set vel=
set resp=
cls
echo Mejora la velocidad de acceso a los programas
set /p vel= Desea activar o desactivar:

if %vel%x==x goto :error1
if %vel%==activar goto :act
if %vel%==desactivar goto :des
if %vel%==exit goto :eof
goto :error1

:act
set resp=1
goto :clav

:des
set resp=0

::Aqui incluiriamos la clave de modificacion %resp%
:clav
call Archivos\rutas\rutas :memo

Reg add "%memory%" /v DisablePagingExecutive /t reg_dword /d 0000000%resp% /f >nul
echo Has conseguido %vel% la mejora de acceso a los programas.
pause
goto :eof

:error1
echo.
echo No es una opcion valida elija activar/desactivar, o exit para salir.
pause
goto :velo

::Zona de aceleracion del menu inicio
:inic
cls
set tiemp=
call Archivos\rutas\rutas :show
SET /p tiemp= Introduce una cantidad de tiempo:
IF %tiemp% GTR 400 (
echo Esa cantidad es superior a la predeterminada de Windows, y no puede modificarse.
) ELSE (
Reg add "%show%" /v MenuShowDelay /t reg_sz /d %tiemp% /f >nul
echo Ha modificado que el menu de inicio se muestre en un tiempo de %tiemp% ms
)
echo.
pause
goto :eof


::Zona de liberacion de dll de programas
:dll
set dll=
set rresp=
cls
echo Descarga la memoria de las DLL no utilizadas
set /p dll= desea activar o desactivar:

if %dll%x==x goto :error2
if %dll%==activar goto :aact
if %dll%==desactivar goto :ddes
if %dll%==exit goto :eof
goto :error2

:aact
set rresp=1
goto :ddll

:ddes
set rresp=0
goto :ddll

:error2
echo.
echo No es una opcion valida elija activar/desactivar, o exit para salir.
pause
goto :dll

:ddll
call Archivos\rutas\rutas :current
Reg add "%current%" /v AlwaysUnloadDl /t reg_dword /d 0000000%rresp% /f >nul
echo Has conseguido %dll% descargar la memoria de las DLL's
echo deberias reiniciar el equipo para que se hagan efectivos los cambios.
pause
goto :eof


::Zona de acelerado de apagado de sistema
:apag
cls
set tiemp=
call Archivos\rutas\rutas :temp
SET /p tiemp= Introduce una cantidad de tiempo:
IF %tiemp% GTR 20000 (
echo Esa cantidad es superior a la predeterminada de Windows, y no puede modificarse.
) ELSE (
Reg add %temp% /v WaitToKillAppTimeout /t reg_sz /d %tiemp% /f >nul
echo Ha modificado que la cantidad de tiempo de apagado sean %tiemp% ms
)
pause
goto :eof